#include <stdio.h>
#include <stdlib.h>
#include <sys/ipc.h>
#include <sys/shm.h>

int main(int argc, char const *argv[])
{
    // 创建密钥
    key_t key = ftok(".", 1);
    if (key == -1)
    {
        perror("创建密钥失败\n");
        return -1;
    }

    // 创建共享内存
    int shmid = shmget(key, 1024, IPC_CREAT | 0777);
    if (shmid == -1)
    {
        perror("创建共享内存失败\n");
        return -1;
    }

    // 映射共享内存
    char *p = shmat(shmid,NULL,0);
    if(p == NULL)
    {
        perror("映射共享内存失败\n");
        return -1;
    }

    // 写入数据
    while(1)
    {
        printf("%s\n",p);
        sleep(1);
    }

    // 解除映射
    shmdt(p);

    // 删除共享内存
    shmctl(shmid,IPC_RMID,NULL);
    
    return 0;
}
